/**
 * 用户组用户tab。
 */
Ext.define('Gigi.view.group.Users', {
			extend : 'Ext.grid.Panel',
			alias : 'widget.groupusers',

			store : 'GroupUsers',
			selModel : Ext.create('Ext.selection.CheckboxModel'),

			region : 'center',
			title : '用户',
			verticalScrollerType : 'paginggridscroller',
			invalidateScrollerOnRefresh : false,
			loadMask : true,
			disableSelection : false,
			dockedItems : [{
						xtype : 'toolbar',
						items : [{
									text : '添加',
									itemId : 'addUser'
								}, {
									text : '删除',
									itemId : 'deleteUser'
								}]
					}],

			columns : [{
						header : '用户名',
						dataIndex : 'username',
						align : 'left',
						flex : 1
					}, {
						header : 'Email',
						dataIndex : 'email',
						flex : 1
					}, {
						xtype : 'booleancolumn',
						text : '启用',
						trueText : '是',
						falseText : '否',
						dataIndex : 'enabled',
						align : 'center',
						width : 70,
						sortable : false
					}, {
						xtype : 'booleancolumn',
						text : '账号锁定',
						trueText : '否',
						falseText : '是',
						dataIndex : 'accountNonLocked',
						align : 'center',
						width : 70,
						sortable : false
					}, {
						xtype : 'booleancolumn',
						text : '账号过期',
						trueText : '否',
						falseText : '是',
						dataIndex : 'accountNonExpired',
						align : 'center',
						width : 70,
						sortable : false
					}, {
						xtype : 'booleancolumn',
						text : '密码过期',
						trueText : '否',
						falseText : '是',
						dataIndex : 'credentialsNonExpired',
						align : 'center',
						width : 70,
						sortable : false
					}],

			/**
			 * 根据用户组初始化用户组所有用户列表。
			 * 
			 * @param {}
			 *            groupId
			 */
			initData : function() {
				var tree = Ext.ComponentQuery.query('grouptree')[0], selModel = tree.getSelectionModel();
				var store = this.getStore();
				if (selModel.getCount() != 1) {
					store.removeAll();
				} else {
					var store = this.getStore();
					store.getProxy().url = contextPath + 'sec/group/' + selModel.getSelection()[0].get('id') + '/users';
					store.load();
				}
			},

			initComponent : function() {
				this.callParent(arguments);
			}
		});
/**
 * 用户组菜单tab.
 */
Ext.define('Gigi.view.group.Authorities', {
			extend : 'Ext.grid.Panel',
			alias : 'widget.groupauthorities',

			store : 'Authorities',

			region : 'center',
			title : '权限',
			loadMask : true,
			disableSelection : false,

			selModel : Ext.create('Ext.selection.CheckboxModel'),

			dockedItems : [{
						xtype : 'toolbar',
						items : [{
									text : '保存修改',
									itemId : 'saveAuthorities'
								}]
					}],

			columns : [{
						header : '编码',
						dataIndex : 'code',
						align : 'left',
						flex : 1
					}, {
						header : '描述',
						dataIndex : 'description',
						align : 'left',
						flex : 1
					}],
			/**
			 * 根据用户组初始化用户组所有用户列表。
			 * 
			 * @param {}
			 *            groupId
			 */
			initData : function() {
				var tree = Ext.ComponentQuery.query('grouptree')[0], selModel = tree.getSelectionModel();
				var store = this.getStore(), gridSelModel = this.getSelectionModel();
				if (selModel.getCount() != 1) {
					store.removeAll();
				} else {
					var groupStore = this.groupStore;
					groupStore.getProxy().url = contextPath + 'sec/group/' + selModel.getSelection()[0].get('id') + '/authorities';
					groupStore.load(function(records, operation, success) {
						var authMap = {};
						for (var index in records) {
							authMap[records[index].get('code')] = true;
						}
						store.load({
							callback : function(records, operation, success){
								var i = 0, j = 0, len = this.getCount();
								var selected = new Array();
						        for (; i < len; ++i) {
						        	var model = store.getAt(i);
						            if (authMap[model.get('code')]) {
						            	selected[j] = model;
						            	++j;
						            }
						        }
						        gridSelModel.select(selected);
							}
						});
					});
				}
			},

			initComponent : function() {
				this.groupStore = Ext.create('Gigi.store.GroupAuthorities');
				this.callParent(arguments);
			}
		});
/**
 * 角色用户、权限等Tab.
 */
Ext.define('Gigi.view.group.Tab', {
			extend : 'Ext.tab.Panel',
			alias : 'widget.grouptab',

			region : 'center',

			items : [{
						title : '用户',
						xtype : 'groupusers',
						listeners : {
							activate : function(tab, options) {
								tab.initData();
							}
						}
					}, {
						title : '权限',
						xtype : 'groupauthorities',
						listeners : {
							activate : function(tab, options) {
								tab.initData();
							}
						}
					}],

			initData : function() {
				this.getActiveTab().initData();
			},

			initComponent : function() {
				this.callParent(arguments);
			}
		});